<script setup lang="ts">
import { request } from '@/api';
import router from '@/router';
import { closeToast, showConfirmDialog, showLoadingToast, showSuccessToast } from 'vant';
import { onMounted, ref } from 'vue';


//定义收货地址列表
const addressList  = ref<AddressItem[]>([])
//获取地址列表
const getAddressList = async () => {
  showLoadingToast({message: '加载中...', duration: 0, forbidClick: true})
  const res = await request.get<MkResponse<AddressItem[]>>('member/address')
  console.log(res.data.result)
  addressList.value = res.data.result
  closeToast()
}
onMounted(()=>{
  getAddressList()
})


//设置默认地址
const updateAddressDefault  =async (item:AddressItem)=>{
  //提交服务器修改该项为默认
  await request.put(`member/address/${item.id}`,{ isDefault: 0})
  //将列表所有项改为非默认
  addressList.value.forEach(item => item.isDefault = 1)
  //将列表中该项改为默认
  item.isDefault = 0
  showSuccessToast('设置成功')
}

//删除地址
const removeAddress =async (item:AddressItem)=>{
  showConfirmDialog({
    title:'温馨提示',
    message:'是否删除该地址？',
  }).then(async ()=>{
    //删除地址
    await request.delete(`member/address/${item.id}`)
    //重新获取地址列表
    getAddressList()
    showSuccessToast('删除成功')
  })
}

//下拉刷新
const refreshing = ref(false)
const onRefresh = async () => {
  await getAddressList()
  refreshing.value = false
  showSuccessToast('刷新成功')
}

//点击编辑页
const gotoEdit = (id:string)=>{
  router.push(`/address/edit/${id}`)
}


</script>

<template>
  <div class="address-manager-page">
    <van-pull-refresh v-model="refreshing" @refresh="onRefresh">
      <van-swipe-cell v-for="item in addressList" :key="item.id">
      <div class="item">
        <div class="item-wrapper">
          <div class="item-area">
            <span v-if="item.isDefault === 0" class="item-tag">默认</span>
            {{ item.fullLocation }}
          </div>
          <div class="item-address"> {{ item.address }}</div>
          <div class="item-connect">{{ item.receiver }} {{ item.contact }}</div>
        </div>
        <div class="item-edit">
          <van-icon @click="gotoEdit(item.id)" name="edit" size="20" color="var(--mk-gray)"></van-icon>
        </div>
      </div>
      <template #right>
        <van-button @click="updateAddressDefault(item)" square type="primary" style="height: 100%">
          设为<br />默认
        </van-button>
        <van-button @click="removeAddress(item)" square type="danger" style="height: 100%" text="删除" />
      </template>
    </van-swipe-cell>
</van-pull-refresh>
    <div class="submit">
      <van-button round block type="primary" to="/address/edit"> 新建地址 </van-button>
    </div>
  </div>
</template>

<style lang="css" scoped>
.address-manager-page {
  padding: 8px;
  width: 100%;
  min-height: 100vh;
  position: relative;
  padding-bottom: 80px;
}

.submit {
  position: absolute;
  left: 0;
  bottom: 0;
  width: 100%;
  padding: 16px;
  height: 80px;
}

.item {
  min-height: 108px;
  width: 100%;
  background-color: var(--mk-white);
  border-radius: 2px;
  display: flex;
  margin-bottom: 8px;
}

.item-wrapper {
  padding: 16px;
  flex: 1;
}

.item-area {
  font-size: 14px;
  color: var(--mk-text);
  margin-bottom: 5px;
}

.item-tag {
  display: inline-block;
  border-radius: 4px;
  width: 40px;
  height: 20px;
  line-height: 20px;
  font-size: 12px;
  color: var(--mk-white);
  text-align: center;
  background-image: linear-gradient(90deg, var(--mk-linear_begin), var(--mk-linear_end));
  margin-right: 4px;
}

.item-address {
  font-size: 16px;
  color: var(--mk-black);
  font-weight: 500;
  margin-bottom: 5px;
}

.item-connect {
  font-size: 12px;
  color: var(--mk-text);
}

.item-edit {
  width: 48px;
  display: flex;
  align-items: center;
}

.btn-group {
  height: 100%;
  width: 100px;
  display: flex;
}
</style>